{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "# The difference between 6.10 and 6.9 is very subtle.\n",
    "# Take a look at step function in env\n",
    "# model and environment part\n",
    "import numpy as np\n",
    "from collections import defaultdict\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "class WindyGridworld():\n",
    "    def __init__(self, is_eight_action = False, ninth_action = False):\n",
    "        # origin is defined as left_lower corner. and start from 1\n",
    "        # namely cols are : 1 2 3 4 5 6 7 8 9 10\n",
    "        # rows are : 1 2 3 4 5 6 7\n",
    "        # we start from (1, 4)\n",
    "        self.xlimit = 10\n",
    "        self.ylimit = 7\n",
    "        self.is_eight_action = is_eight_action\n",
    "        self.ninth_action = ninth_action\n",
    "        # we use explicit dictionary instead of function to accelerate training\n",
    "        self.wind_dict = { 1: 0, 2: 0, 3: 0, 4: 1, 5: 1,\n",
    "                           6: 1, 7: 2, 8: 2, 9: 1, 10: 0 }\n",
    "\n",
    "    def step(self, pos, action):\n",
    "        x, y = pos\n",
    "        wind = self.wind_dict[x]\n",
    "        if action == 'left':\n",
    "            next_state = max(1, x-1), min(y+wind, self.ylimit)\n",
    "        elif action == 'right':\n",
    "            next_state = min(self.xlimit, x+1), min(y+wind, self.ylimit)\n",
    "        elif action == 'up':\n",
    "            next_state = x, min(y+wind+1, self.ylimit)\n",
    "        elif action == 'down':\n",
    "            next_state = x, max(0, min(y+wind-1, self.ylimit))\n",
    "        else:\n",
    "            if self.is_eight_action:\n",
    "                if action == 'left-up':\n",
    "                    next_state = max(1, x-1), min(y+wind+1, self.ylimit)\n",
    "                elif action == 'left-down':\n",
    "                    next_state = max(1, x-1), max(0,min(y+wind-1, self.ylimit))\n",
    "                elif action == 'right-up':\n",
    "                    next_state = min(self.xlimit, x+1), min(y+wind+1, self.ylimit)\n",
    "                elif action == 'right-down':\n",
    "                    next_state = min(self.xlimit, x+1), max(0,min(y+wind-1, self.ylimit))\n",
    "                else:\n",
    "                    if self.ninth_action:\n",
    "                        if action == 'stay':\n",
    "                            next_state = x, max(0,min(y+wind, self.ylimit))\n",
    "                        else:\n",
    "                            raise ValueError\n",
    "                    else:\n",
    "                        raise ValueError\n",
    "            else:\n",
    "                raise ValueError\n",
    "        #------------------Ex 6.10----------------------\n",
    "        random_factor = np.random.randint(-1,2)\n",
    "        next_state = next_state[0], max(0,min(next_state[1]+random_factor, self.ylimit))\n",
    "        #-----------------------------------------------\n",
    "        if next_state == (8, 4):\n",
    "            return next_state, 0\n",
    "        else:\n",
    "            return next_state, -1\n",
    "\n",
    "class Agent():\n",
    "    def __init__(self, alpha=0.5, gamma=1, eps=0.1, is_eight_action = False, ninth_action = False):\n",
    "        self.alpha = alpha\n",
    "        self.gamma = gamma\n",
    "        self.eps = eps\n",
    "        self.Q = defaultdict(int)\n",
    "        if not is_eight_action:\n",
    "            self.action_space= ['left', 'right', 'up', 'down']\n",
    "        else:\n",
    "            if ninth_action:\n",
    "                self.action_space= ['left', 'right', 'up', 'down',\n",
    "                                'left-up', 'left-down', 'right-up', 'right-down', 'stay']\n",
    "            else:\n",
    "                self.action_space= ['left', 'right', 'up', 'down',\n",
    "                                'left-up', 'left-down', 'right-up', 'right-down']\n",
    "    def greedy(self, state):\n",
    "        max_action = self.action_space[0]\n",
    "        max_Q = self.Q[state, max_action]\n",
    "        for action in self.action_space:\n",
    "            if self.Q[state, action] > max_Q:\n",
    "                max_action = action\n",
    "                max_Q = self.Q[state, action]\n",
    "        return max_action\n",
    "\n",
    "    def e_greedy(self, state):\n",
    "        if np.random.random() > self.eps:\n",
    "            return self.greedy(state)\n",
    "        else:\n",
    "            random_action = np.random.choice(self.action_space)\n",
    "            return random_action\n",
    "\n",
    "    def update(self, R, state, action, next_state, next_action):\n",
    "        if R == 0:\n",
    "            next_Q = 0\n",
    "        else:\n",
    "            next_Q = self.Q[next_state, next_action]\n",
    "        self.Q[state, action] += self.alpha * ( R + self.gamma*next_Q - self.Q[state,action] )"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [],
   "source": [
    "def game(is_eight_action = False, ninth_action = False):\n",
    "    env = WindyGridworld(is_eight_action = is_eight_action, ninth_action = ninth_action)\n",
    "    EPISODE = 400\n",
    "    hist = []\n",
    "    agent = Agent(is_eight_action = is_eight_action, ninth_action = ninth_action)\n",
    "    for episode in range(EPISODE):\n",
    "        state = 1, 4\n",
    "        action = agent.e_greedy(state)\n",
    "        for step in range(5000):\n",
    "            next_state, R = env.step(state, action)\n",
    "            next_action = agent.e_greedy(next_state)\n",
    "            agent.update(R, state, action, next_state, next_action)\n",
    "            state = next_state\n",
    "            action = next_action\n",
    "            if R == 0:\n",
    "                # means next state is terminal\n",
    "                break\n",
    "        # turn off e-greedy to test\n",
    "        state = 1, 4\n",
    "        action = agent.greedy(state)\n",
    "        for step in range(5000):\n",
    "            next_state, R = env.step(state, action)\n",
    "            next_action = agent.greedy(next_state)\n",
    "            agent.update(R, state, action, next_state, next_action)\n",
    "            state = next_state\n",
    "            action = next_action\n",
    "            if R == 0:\n",
    "                hist.append(step)\n",
    "                # means next state is terminal\n",
    "                break\n",
    "    return hist"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [],
   "source": [
    "hist_8 = []\n",
    "for experiment in range(100):\n",
    "    hist_8.append(game(is_eight_action = True, ninth_action = False))\n",
    "hist_8 = np.mean(hist_8, axis = 0)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 720x720 with 1 Axes>",
      "image/png": "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77xTrG/BcSyYJu7evbvi4+MVFham9u3bq0mTJo7lW7dudfweKHiOt956y2l/ixcv1u7du0v8fRYWFqbz58+Xq/7du3fr+++/dyzLycnR+++/X+a2sAeBDRVyzz33aO7cuXrmmWf03nvvacmSJXrttdc0aNAg3XrrrRo5cmSZ++jdu7d++OEHZWZm6tSpU0pJSXFMyTRo0MDRr02bNtq5c2epv3wrqlWrVoqNjS32BzopKUknT57UZZddVmybolchnjx5UlLeFbOlefPNN5WWlqbNmzfrwIEDCgsLc/yCLWrPnj0XXFa4JiuPXfv27SXlTakU/iOVkpLiOEescePGpb7GCynpys2TJ0+qUaNGZW777LPP6oorrtChQ4f0yy+/aPLkybruuuvK9bwFx6pgmrSw6Ohopz5t2rSRJP3222/l2nfR11QwlVf4feDt7a2XX35ZsbGxysrK0vHjx5WSkqJRo0Y5/fusX79eX3/9tV588UUdP35cS5cu1eOPP16u43Mhbdq00cGDB8t1HmlJCp/H5uXlpRtuuEGbNm2SJB0/fly7d+92nMd288036/jx49q5c2e59n2h90PhY9eqVSvFxcUVCxMl/WxkZGRo3rx5uv/++x3nnj700EPy8vIqczq04Cp2Pz+/YuumTZumnj17qmfPntqxY0eJ25f3voOtWrVSWlqakpKSnJYfO3bM8TukQExMjJKTk50C2/r16/Xjjz/q3LlzuuWWW1SzZk2FhIQ4heRWrVo5ti8qJibGsf6P1l/4/MQCJf17oHIQ2FAh//rXv7Rv3z7HH78C3333nU6fPl3sxOSiOnfurKVLl0qSHn/8cd15553q2bOn43/KRW8RYWVYK2ufHh4eJa670FVUHh4epT7Pnj171K5dO/Xv31/ff/+9unfvrsWLF+v777//Q6/T6mNX0H/ChAmOP1JF26pVq8qsqySuXHn2zTffqFWrVho2bJj27NmjRx99VD///LP+3//7f+XeR0mvveDfq+i68r7HyvM+eO+99/TCCy9o6dKlGjRokHr37q2ePXtq1qxZxf59Bg4cqOuuu06TJ09W7dq19e6772r37t265pprylVPSVz5eSl8Htt1112nOnXqOJ3jtWnTJnXr1s1xMUJFzv8qz7G70M/fhV7TZ599poYNGzpGkR566CH99NNPJYaMwtLT0xUfH1/icd67d69Wr16t1atXO0ZBiyo8ilqaC72eC9mwYYO6d+8uLy8vde3aVevWrVNmZqYiIyN1yy236MYbb5Svr6/jPMjCSnu//9H6L7RfuA8XHaBCil6xVcDDw0Oenp5lTu/cf//9OnfunG677TZlZWU5lpd0Fd2+fft05ZVXlvmLryK/VOLi4tS1a1fHpfgFmjRpovr161/wirE/KisrS4sWLXJMD77xxhsaN26cbrvtNq1cudLRr2C0q7B27dpJ+t//iK0+dgW3b8jMzNTq1av/4Cu0x7Fjx/TZZ5/ps88+U82aNbVs2TK9+OKLeuutt5SVlXXB11Tw73fFFVcUW1dwjAv67Nu3T1LeVbIF05uueuCBB/T5559rzJgxTsuHDBlSYv9ff/1Vv/76qyZOnKirrrpKv/zyi/7973/rwQcflFSx9/a+ffvUs2dP1apVyzFlVhGHDx/WwYMHdfPNNys2NlapqalOo48bN25UaGioevbsqRo1ajjdf80KsbGx6tKli3x8fJxG2Ur62ZDyRikPHDig0NBQx8VPI0aMKNdzLVq0SGPGjHGMZNkhNjZWvXv3VtOmTZ1G2S699FKn0dYC69at03333af7779ffn5+jrrWr1+vv//97zp69KjOnz/vuGBIcn6/F14u5R03V36fxcXFOX4HFVbSMlQORthQIbt371abNm10/fXXOy0fMGCAatasqa1bt5a6fU5OjowxTncQ9/T01LPPPlus75w5c9SqVSsNHz681H1mZGSU+zYbS5YskZ+fn0aNGuW0vOD5C99bzlUlTZlu27atxHU9e/ZUx44dHd/Xrl1bw4cP1+HDh/Xrr79Ksv7Y/frrr9q9e7f+9a9/lTgV5+/vX8YrtJ6np2ex2wZkZmZq9+7d8vb2Vr169STl/ZtLKvaHLzk5WZGRkRo4cKACAgIcy+vUqaMRI0boyJEjioyMlJR3BV92drYmTJhQ7JYuf1ROTk6xkbS2bduqf//+TstKer8W3H6l8HujIu/tOXPmqFatWhUaiSxqw4YNuuKKK9S/f3/9+OOPToFx06ZN8vHxcdzyxOqg8+2336pu3brFwu1TTz11wW1mzpyp3r1769lnn1VmZmaJn9ZQksmTJ+vkyZP67LPPSjwNQip7BL0s3377raS8W24U9vTTT5fYv2Dk7IUXXtDhw4cd/6Fav3692rdvrwEDBujXX391mvIu+H1VdJ933XWX2rdv79Lvs2+//Vbt27d3uh2Ol5eXnnjiiT+8T7iGETZUyKRJk9S3b1+tXLlSH330kQ4ePKirr75aw4cPV2JiYrET9ItatGiRnnrqKa1Zs0YRERGqWbOm7r///hLvlv/OO+/onnvu0ccff6zu3btr06ZN8vX1VZcuXRQVFeW4pD8yMlJ9+/bVe++9py1btig3N/eCv7g//fRTPfroo3rnnXfUvn17bdu2Td26ddMDDzygJUuWOH7JWmHlypU6duyYfvjhBx0+fFgtWrTQ6NGjdfToUafRNUnasWOH1q5dqw8++EBpaWkaPHiwWrVqpQceeMAxnWT1sTPGaPDgwVqxYoWio6MVFhamgwcPyt/fX8HBwerXr1+5LiKxkp+fnw4fPqwFCxZo+/btOnHihIKDgzV06FCtXr1aycnJkqStW7cqNzdXzz//vOrXr6/MzExt2bJFcXFxGjt2rFatWqXNmzdr+vTpysrK0uDBgxUUFKSBAwc6bvZ76NAhjR8/XpMmTdLWrVs1e/ZspaSkqG3bturSpYu6dOlS4foXLFigIUOG6MyZM/rll1/UunVrjRo1SjExMU4XhYSGhurxxx/XggULtH//fnl7e2vgwIGqW7euZs2a5ehXkff2l19+qUGDBmncuHG6+uqrtWLFCuXk5Oi6667TmTNnNHr06DLr37Bhgx555BF17dpV//nPf5zWHTx4UImJibrpppuUlpbm+M+HVT799FONGjVK06ZNU8eOHRUdHa2+ffuWep+wiIgIvfTSS7rvvvv01VdfXXAas6j4+Hjdc889mj9/vnbt2qWvv/5akZGRyszMVLNmzdSrVy/HtOQftXTpUq1atUrPPfecmjVrps2bN+uGG25Qjx49dOzYsWL9o6OjdfToUXXo0MHpnmybNm3S+fPn1b59e8fFUYW3+fDDDzV69Gh9//33WrJkiYKCgjRmzBgdOnRIr7/++h+uf/LkyXrwwQc1b948vf/++zp8+LDuu+8+1a5d+w/vE65z+6WqtOrVrrrqKjN37lwTFxdnzp49axITE83MmTOdbqNQWhswYIDZvn27OXPmjElISDBTpkxxXJ5e9FLxOnXqmDfeeMPs37/fnD171iQnJ5vvvvvOdOnSxdHHz8/PzJo1yxw/ftzk5OQYkzcsYKTitxmQZOrVq2fef/99k5CQYM6ePWsOHDhgXnnlFePr6+vUr+C2HkVveVFwq4KSbilRuA0dOtSsXr3aJCcnm6ysLHPo0CETHh5uWrdu7ehTcDn9q6++akJDQ01MTIzJysoy0dHR5sEHH7T92Eky7dq1M1988YVJTEw0Z8+eNQkJCWbFihVOt1y4ULvQbT02btxYrO+ECROc/m1Kaj4+PubNN980W7duNSdOnDCnT582u3fvNq+88oqpU6eOU9+RI0ea/fv3m/Pnzxd7/Z07dzYrVqwwaWlp5vTp02bTpk1Ot98o3P7xj3+YTZs2mYyMDJOenm62bdtmnn32Wcf6gtsh3HbbbcW2Lfr+ql27tuO9debMGfPrr7+aAQMGFHvtnTp1Ml988YU5ePCgOXPmjElJSTEbNmww/fv3d9p/Rd/b3t7e5rnnnjO7du0yWVlZJiUlxaxbt87cdddd5frZbN26tSnQrVu3Yuu//vprY4wxy5YtK3H7ojUV/KwMGTKkWN+it8GQZJo0aWK++uork5qaak6dOmXmzp1rmjZtWuJrLWjLly83xhjTq1evcr3Gos/3xhtvmO3bt5u0tDSTlZVl4uPjzcKFC82gQYOMp6dniT+rJe2rpNdTp04dM336dJOSkmIyMjLM8uXLTdu2bUvsK8nMnTvXGGPM8OHDnZb/9NNPxhhj7rjjjmLbeHh4mLFjx5ro6GiTlZVlkpOTzcyZM51u81PW+7ik23pIMn/5y1/M0qVLTUZGhklJSTGffPKJueqqq7ith5uaR/4XANwgKChIcXFxmjhxoktTWcCf1bfffqtrrrlGLVu25CR5XNQ4hw0AUC21bNlSvXv3VkREBGENFz3OYQMAVCsdO3bUtddeq8cee0xnz54tdiNs4GLECBsAoFq59957NXPmTDVu3Fj//Oc/deTIEXeXBNiOc9gAAACqOEbYAAAAqriL+hy2o0ePlvgZdgAAAFVNUFDQBT/D+aIObIcOHVJISIi7ywAAAChTwSexlIQpUQAAgCqOwAYAAFDFEdgAAACqOAIbAABAFXdRX3QAAADK5u3trbFjx6pjx47y9GQsxy65ubnatWuXpkyZouzs7AptS2ADAOBPrn///jp//ryGDRum8+fPu7uci5aPj4/GjBmj/v3765tvvqnQtsRoAAD+5G655RbNmjWLsGaz8+fPa9asWerevXuFtyWwAQDwJ+fn56fjx4+7u4w/hZSUFNWtW7fC2xHYAAD4k/Pw8FBubq67y/hTyM3NlYeHR4W3I7ABAACUID09XZdddpm7y5BEYAMAAFVcUFCQli5dqhMnTujIkSOaNm2avLy8LH2OtWvXasiQIU7L/Pz8FBsba+nz/FEENgAAUKV99NFHOnr0qJo1a6ZOnTqpe/fueuyxx9xdVqUisAEAgCrtsssu05w5c3T27FklJyfr+++/V8eOHUvs+8gjjyg6OlppaWk6cOCAhg8f7rT+7rvvVlRUlFJTU7V//3717t1bEydOVLdu3fTBBx8oPT1d06ZNkyQZY3T55ZdLkurWrauIiAgdPXpUcXFxGj9+vONctNDQUG3cuFFvvfWWTpw4oYMHD6pPnz6WHwdzsbbIyEi310Cj0Wg0WlVvn3/+udtrKK2NGDHCREREmJo1a5rmzZubHTt2mP79+5fY94477jCtW7c2kszNN99sTp8+bYKDg40kExISYk6dOmV69uxpPDw8TPPmzU27du2MJLN27VozZMgQp30ZY8zll19uJJmIiAizcOFCU6dOHRMUFGT27NljHn30USPJhIaGmnPnzpmhQ4caT09PM3LkSHP48OEKH+/Scgs3zgUAAEVMkdTJ5ufYJmlsuXquX79ew4YNU1pamry9vTVz5kwtXLiwxL7Lli1zfL1hwwatWLFC3bp1U1RUlIYMGaLPPvtMq1atkiQlJiaW6/k9PT11//33Kzg4WBkZGcrIyNA777yjhx56SJ999pkk6dChQ/r0008lSREREZo+fbqaNGmi5OTkcj1HmTVYshcAAAAbeHh4aPny5Zo/f75q166tRo0aqUGDBpo0aZKmT5+u9PR0paen6/nnn5ck9enTRz/99JOOHz+ukydP6o477pC/v78kqUWLFjpw4ECFa/D391eNGjV06NAhx7JDhw4pICDA8X1SUpLj68zMTElSnTp1/tBrLgkjbAAAoIjyjXxVhoYNG6ply5b64IMPdO7cOZ04cULh4eGaOHGirrrqKo0aNcrR19fXV/PmzdPDDz+sRYsWKTs7WwsWLHCcaxYfH+84J60oY8wFa0hJSdG5c+cUFBSkmJgYSVLLli11+PBhC19p6RhhAwAAVdbx48d18OBBjRo1Sl5eXqpXr55CQ0O1ffv2Yn19fX1Vo0YNHTt2TNnZ2erTp4969erlWB8WFqbBgwerR48e8vDwUPPmzdWuXTtJUnJyslq3bl1iDbm5uZozZ45ee+011alTRy1bttRTTz2l//u//7PnRZeAwAYAAKq0v//97+rTp4+OHTum/fv3Kzs7W2PHFh8FzMjI0BNPPKE5c+bo5MmTeuCBB7R48WLH+sjISA0ePFhTpkxRamqq1q9fr6CgIEnS1KlTde+99+rEiROaOnVqsX0//vjjOn36tA4ePKhNmzbpyy+/dJy/VlncfvWHXY2rRGk0Go1GK7tV9atEL7b2R64SZYQNAACgiiOwAQAAVHEENpe0lxQj6TZ3FwIAAC5ibgtsNWrU0JYtW7Rt2zbt3LeKDs4AACAASURBVLlTL730kiQpPDxcBw8eVFRUlKKionTNNdc4tpk6dar27dun7du3Kzg42E2VF+arvNDm5+5CAADARcxt92E7e/asevToodOnT8vb21ubNm3Sd999J0l69tlnNW/ePKf+ffv2VZs2bdSmTRt17txZ06dP1w033OCO0gvJzX9koBIAUH0ZY+Tp6anc3NyyO8Mlnp6epd7z7YLb2VBLuZ0+fVqS5OPjIx8fn1JfQL9+/fT5559LkrZs2aL69euradOmlVLnhRHYAADVX3p6uho1auTuMv4U/P39lZaWVuHt3Jo0PD09FRUVpaNHj2rlypX6+eefJUmvvfaatm/frnfffVe+vr6SpICAAMXHxzu2TUhIcPpICPcgsAEAqr9169bpwQcflI+Pj7tLuaj5+PjowQcf1Pr16yu8rVs/mio3N1fBwcGqV6+eFixYoI4dO+r5559XUlKSfH199cknn+i5557Tq6++6vhYicJKGpEbNmyYhg8fLkmOzw6z8RXkPxLYAADV18KFCzV27FjNmDFDnp78TbNLbm6udu3adcEPri9Nlfgs0dTUVK1bt059+vTRO++8I0k6d+6cwsPD9cwzz0jKG1Fr0aKFY5vAwEAlJiYW29eMGTM0Y8YMSXl3NLYXgQ0AUP1lZ2frrbfecncZKIXbkoa/v7/q1asnSbrkkkvUs2dP7d692+m8tP79+2vnzp2SpMWLF+vhhx+WJHXu3FmpqalKSkqq/MKdENgAAID93DbC1qxZM0VERMjLy0uenp6aM2eOli5dqtWrV+vSSy+Vh4eHtm3bppEjR0qSli1bpjvuuEP79+/XmTNnNHjwYHeVXgiBDQAA2M9tgW3Hjh269tpriy2/7bYL34R2zJgxdpb0BxDYAACA/UgaLiGwAQAA+5E0XEJgAwAA9iNpuITABgAA7EfScAmBDQAA2I+k4RICGwAAsB9JwyUENgAAYD+ShksIbAAAwH4kDZcQ2AAAgP1IGi4hsAEAAPuRNFxCYAMAAPYjabiEwAYAAOxH0nAJgQ0AANiPpOESAhsAALAfScMlBDYAAGA/koZLCGwAAMB+JA1LcBgBAIB9SBouyxGHEQAA2Imk4bJccRgBAICdSBouI7ABAAB7kTRcRmADAAD2Imm4jMAGAADsRdJwGYENAADYi6ThMgIbAACwF0nDZQQ2AABgL5KGywhsAADAXiQNlxHYAACAvUgaLiOwAQAAe5E0XEZgAwAA9iJpuIzABgAA7EXScBmBDQAA2Iuk4TICGwAAsBdJw2UENgAAYC+ShsuMOIwAAMBOJA2XMcIGAADsRdJwGYENAADYi6ThslxJHu4uAgAAXMQIbC5jhA0AANiLpOEyAhsAALAXScNlBDYAAGAvkobLCGwAAMBeJA2XEdgAAIC9SBouI7ABAAB7kTRcRmADAAD2Imm4jMAGAADsRdJwGYENAADYi6ThMgIbAACwF0nDZQQ2AABgL5KGywhsAADAXiQNlxHYAACAvUgaLiOwAQAAe5E0XEZgAwAA9iJpuIzABgAA7EXScBmBDQAA2Iuk4TICGwAAsBdJw2UENgAAYC+ShssIbAAAwF4kDZcR2AAAgL1IGi4jsAEAAHuRNFxGYAMAAPYiabiMwAYAAOxF0nAZgQ0AANiLpOEyAhsAALAXScNlBDYAAGAvkobLCGwAAMBeJA2XEdgAAIC9SBouI7ABAAB7uS1p1KhRQ1u2bNG2bdu0c+dOvfTSS5KkVq1aafPmzdq7d69mz54tHx8fSZKvr69mz56tffv2afPmzQoKCnJX6UUQ2AAAgL3cljTOnj2rHj16qFOnTurUqZP69Omjzp07a9KkSZoyZYratm2rkydPasiQIZKkIUOG6OTJk2rTpo2mTJmiSZMmuav0IghsAADAXm5NGqdPn5Yk+fj4yMfHR8YY9ejRQ998840kKSIiQv3795ck9evXTxEREZKkb775Rrfddpt7ii6GwAYAAOzl1qTh6empqKgoHT16VCtXrtSBAwd06tQp5eTkSJISEhIUEBAgSQoICFB8fLwkKScnR6mpqWrUqJHbav8fAhsAALCXW5NGbm6ugoODFRgYqOuvv14dOnQo1scYI0ny8PC44LrChg0bpsjISEVGRsrf39/6ooshsAEAAHtViaSRmpqqdevW6YYbblD9+vXl5eUlSQoMDFRiYqKkvNG2Fi1aSJK8vLxUr149nThxoti+ZsyYoZCQEIWEhCglJaUSqiewAQAAe7ktafj7+6tevXqSpEsuuUQ9e/ZUTEyM1q5dq3vvvVeSFBoaqkWLFkmSFi9erNDQUEnSvffeqzVr1rin8GIIbAAAwF7e7nriZs2aKSIiQl5eXvL09NScOXO0dOlSRUdHa/bs2Zo4caKioqIUFhYmSQoLC9MXX3yhffv26cSJExo4cKC7Si+CwAYAAOzltsC2Y8cOXXvttcWWx8bGqnPnzsWWnz17VgMGDKiM0iqIwAYAAOxF0nAZgQ0AANiLpOEyAhsAALAXScNlBDYAAGAvkobLCGwAAMBeJA2XEdgAAIC9SBouy81/LP5JDAAAAFYgsLmsILBxKAEAgD1IGS4jsAEAAHuRMlxGYAMAAPYiZbiMwAYAAOxFynAZgQ0AANiLlOEyAhsAALAXKcNlBDYAAGAvUobLCGwAAMBepAyXEdgAAIC9SBkuI7ABAAB7kTJcRmADAAD2ImW4jMAGAADsRcpwGYENAADYi5ThMgIbAACwFynDZQQ2AABgL1KGy0z+I4cSAADYg5ThMkbYAACAvUgZLiOwAQAAe5EyXFYQ2DzcWgUAALh4EdhcxggbAACwFynDZQQ2AABgL1KGywhsAADAXqQMlxHYAACAvUgZLiOwAQAAe5EyXEZgAwAA9iJluIzABgAA7EXKcBmBDQAA2IuU4TICGwAAsBcpw2UENgAAYC9ShssIbAAAwF6kDJcR2AAAgL1IGS4jsAEAAHuRMlxGYAMAAPYiZbiMwAYAAOxFynAZgQ0AANiLlOEyAhsAALAXKcNlBDYAAGAvUobLCGwAAMBepAyXEdgAAIC9SBkuI7ABAAB7kTJcRmADAAD2ImW4jMAGAADsRcpwGYENAADYi5ThMgIbAACwFynDZQQ2AABgL1KGywhsAADAXqQMlxHYAACAvUgZLiOwAQAAe5EyXEZgAwAA9iJluIzABgAA7EXKcBmBDQAA2IuU4TICGwAAsBcpw2UENgAAYC9ShssIbAAAwF6kDJcR2AAAgL1IGS4jsAEAAHuRMlxGYAMAAPYiZbiMwAYAAOxFynAZgQ0AANjLbSkjMDBQa9asUXR0tHbu3KknnnhCkjRhwgQlJCQoKipKUVFR6tu3r2ObcePGad++fdq9e7d69erlrtKLILABAAB7ebvribOzs/X0008rKipKderU0S+//KKVK1dKkqZMmaJ33nnHqX+HDh00cOBAdezYUc2bN9eqVavUtm1b5ebmlrT7SkRgAwAA9nJbykhKSlJUVJQkKSMjQzExMQoICLhg/379+mn27Nk6d+6c4uLitH//fl1//fWVVW4pCGwAAMBeVSJlBAUFKTg4WFu2bJEkjRkzRtu3b1dYWJjq168vSQoICFB8fLxjm4SEhFIDXuUhsAEAAHu5PWXUrl1b8+bN05NPPqn09HRNnz5dl19+uTp16qQjR444pkY9PDyKbWuMKbZs2LBhioyMVGRkpPz9/W2v/3/cfigBAMBFyq0pw9vbW/PmzdOsWbO0YMECSdLRo0eVm5srY4xmzJjhmPZMSEhQixYtHNsGBgYqMTGx2D5nzJihkJAQhYSEKCUlpXJeiHJEYAMAAHZxa8oICwtTTEyMpkyZ4ljWtGlTx9f33HOPdu7cKUlavHixBg4cKF9fX7Vq1Upt2rTRzz//XOk1lyxXBDYAAGAXt10l2rVrVz388MP67bffHBcf/Oc//9GgQYPUqVMnGWMUFxenESNGSJKio6M1Z84cRUdHKzs7W6NHj64CV4gWILABAAD7eEgqfiLYRSIyMlIhISGV8ExnJL0vaVwlPBcAALgYlZZbGBayBCNsAADAPqQMSxDYAACAfUgZliCwAQAA+5AyLEFgAwAA9iFlWILABgAA7EPKsESuJC93FwEAAC5SBDZL5IjABgAA7EJgs8R5ST7uLgIAAFykCGyWILABAAD7ENgsQWADAAD2IbBZgsAGAADsQ2CzBIENAADYh8BmCQIbAACwD4HNEgQ2AABgHwKbJQhsAADAPgQ2SxDYAACAfQhsliCwAQAA+xDYLEFgAwAA9iGwWeK8JF93FwEAAC5SBDZLnBMjbAAAwC4ENkswJQoAAOxDYLMEgQ0AANiHwGYJAhsAALAPgc0SBDYAAGAfApslCGwAAMA+BDZLENgAAIB9CGyWILABAAD7ENgscV55h5LDCQAArEfCsMT5/EdG2QAAgPUIbJYgsAEAAPsQ2CxBYAMAAPYhsFmCwAYAAOxDYLMEgQ0AANiHwGYJAhsAALAPgc0SBDYAAGAfApslCgKbr1urAAAAFycCmyXO5T8ywgYAAKxHYLMEU6IAAMA+BDZLENgAAIB9CGyWILABAAD7ENgsQWADAAD2IbBZgsAGAADsQ2CzBIENAADYh8BmCQIbAACwD4HNEgQ2AABgHwKbJQhsAADAPgQ2SxDYAACAfQhsliCwAQAA+xDYLEFgAwAA9iGwWYLABgAA7ENgswSBDQAA2IfAZomCwObr1ioAAMDFicBmiez8R0bYAACA9QhsljknAhsAALADgc0y50VgAwAAdiCwWYbABgAA7EFgswyBDQAA2IPAZhkCGwAAsAeBzTIENgAAYA8Cm2UIbAAAwB4ENssQ2AAAgD0IbJYhsAEAAHsQ2CxDYAMAAPYgsFmGwAYAAOxBYLMMgQ0AANiDwGYZAhsAALCH2wJbYGCg1qxZo+joaO3cuVNPPPGEJKlBgwZasWKF9u7dqxUrVqh+/fqObaZOnap9+/Zp+/btCg4OdlfpF0BgAwAA9nBbYMvOztbTTz+tK664QjfccINGjx6tDh06aNy4cVq9erXatm2r1atXa9y4cZKkvn37qk2bNmrTpo2GDx+u6dOnu6v0CyCwAQAAe1QosNWqVUtNmzZ1Wta0aVO9+uqr+vDDD3XTTTeVe19JSUmKioqSJGVkZCgmJkYBAQHq16+fIiIiJEkRERHq37+/JKlfv376/PPPJUlbtmxR/fr1i9XiXucl+bq7CAAAcBHyrkjn6dOnq2PHjvrrX/8qKS/A/fTTT2rZsqUkadiwYerRo4c2bdpUoSKCgoIUHBysLVu2qEmTJkpKSpKUF+oaN24sSQoICFB8fLxjm4SEBAUEBDj6ut85McIGAADsUKERtq5du2rJkiWO7wcOHKiWLVuqb9++at68uWJiYvT8889XqIDatWtr3rx5evLJJ5Wenn7Bfh4eHsWWGWOKLRs2bJgiIyMVGRkpf3//CtXimmwR2AAAgB0qFNiaNm2q33//3fH9HXfcoZ9//lkrVqxQcnKywsPDK3QxgLe3t+bNm6dZs2ZpwYIFkqTk5GTHVGfTpk119OhRSXkjai1atHBsGxgYqMTExGL7nDFjhkJCQhQSEqKUlJSKvDwXZUvyqsTnAwAAfxYVCmyZmZny8/NzfN+9e3etWrXK8X1GRobTVZ1lCQsLU0xMjKZMmeJYtnjxYoWGhkqSQkNDtWjRIsfyhx9+WJLUuXNnpaamVqHpUInABgAA7GTK29asWWO2bt1qGjRoYIYOHWqys7NNly5dHOsnTpxo4uLiyrWvrl27GmOM2b59u4mKijJRUVGmb9++pmHDhmbVqlVm7969ZtWqVaZBgwaObT744AOzf/9+89tvv5nrrruuzOeIjIws92tzvf3XSImV+Hw0Go1Go9EuplZGbin/jrp3725Onz5tsrOzTXZ2tlm7dq3T+m3btpk5c+a4/QWX84Vb3D400lG3v2YajUaj0WjVs5WWWyp0lej69et17bXXqlevXkpNTdXs2bMd6xo0aKA1a9Zo4cKFFdnlRYQpUQAAYI8KBTZJ2rNnj/bs2VNs+cmTJ/XUU09ZUlT1lKM/cDgBAADK9IcSRr169dSzZ09ddtllkqTY2FitWrVKqamplhZXvTDCBgAA7FHhwPbMM89owoQJqlmzptO90TIzM/XKK69o8uTJlhZYfWSLETYAAGCHCiWMxx9/XJMmTdKWLVv0/vvvO6ZG27dvryeeeEKvv/66srKy9P7779tSbNXGlCgAALBPua9e2L9/v1m3bp3x9PQsts7Ly8ts2LDB7N+/3+1XWRS0yr1KdIKRjNtfM41Go9FotOrZSsstFbpxbrNmzTR37lzl5uYWW5eTk6Ovv/5azZo1q8guLyLZ+Y+cxwYAAKxVocC2e/duBQQEXHB9QECAdu/e7XJR1VNO/iPTogAAwFoVCmwvvPCCRo4cqdtvv73Yut69e2vkyJEaP368ZcVVL4ywAQAAe1RoOGjgwIFKSEjQd999pz179mjv3r0yxqhdu3Zq166doqOjNWjQIA0aNMixjTFGjzzyiNV1V0EFgY0RNgAAYC0P5Z3MVi45OTlldyrCGCNvb/eEmMjISIWEhFTSsz0u6X1JjSSdqKTnBAAAF4vSckuFkpSXF9N9F8aUKAAAsEeFzmFDaZgSBQAA9vhD6aJ169bq0aOHGjdurFmzZunQoUPy8fFR06ZNlZSUpPPnz1tdZzXAVaIAAMAeFR5hK/iEg//+97965ZVX1Lp1a0lSjRo1tHPnTo0ZM8byIqsHpkQBAIA9KhTYnn76aY0ePVpTp05V3759nT5LNCMjQwsWLFC/fv0sL7J6YEoUAADYo0LpYujQofrqq6/0zDPPqGHDhsXW79ixQ7169bKsuOqFKVEAAGCPCo2wtWrVSuvWrbvg+tTUVDVo0MDVmqoppkQBAIA9KhTYTp06pUsvvfSC6zt06KCkpCSXi6qemBIFAAD2qFBgW7FihYYMGaJatWoVW9e6dWsNHTpUS5cutay46oUpUQAAYI8KBbYXX3xRfn5+2r59u/7973/LGKN//OMfmjZtmrZt26bTp09r4sSJdtVaxTElCgAA7GMq0lq3bm2WLl1qsrOzTU5OjsnJyTHZ2dlm+fLlpnXr1hXal90tMjKyEp+vp5GMkbq4/XXTaDQajUarfq203FLh+buDBw/qzjvvVN26ddW2bVt5enrqwIEDOn78eEV3dZFhShQAANijQlOiDz30kIKCgiRJaWlp2rp1q37++WdHWAsKCtJDDz1kfZXVAlOiAADAHhUKbOHh4erSpcsF13fu3Fnh4eEuF1U9McIGAADsUaHAVviTDUpSs2ZN5eTklNrn4sVtPQAAgD3KTBctWrRQq1atHN+3b99e3bp1K9avQYMGGjlypA4dOmRpgdUHU6IAAMAeZQa2wYMHa8KECTLGyBij8ePHa/z48cX6eXh4yBijxx57zJZCqz6mRAEAgD3KTBeLFy9WQkKCPDw89MknnygsLEybN2926mOMUUZGhrZu3arY2Fjbiq3amBIFAAD2KDNdbNu2Tdu2bZMkBQQEaN68edq1a5fthVU/TIkCAAB7lHnRQePGjdWtWzfVqVNHr7zyiiOseXp6avz48dq7d69Onz6tyMhI9e7d2/aCqy6mRAEAgD3KDGzPPfecvv3222JXf7777rt6+eWX5e/vr+joaHXo0EGLFy/W9ddfb1uxVRtTogAAwB5lBrZu3bppyZIlyszMdCzz9/fXqFGjdODAAV1++eUKCQnRVVddpZMnT+qpp56yteCqiylRAABgjzIDW1BQkH777TenZbfffru8vb01ZcoUnTx5UpIUGxurzz//vNQb617cmBIFAAD2KDOw+fn56dixY07LQkJCZIzR6tWrnZbv2bNHjRs3trbCaoMpUQAAYI8yA1tCQoJat27ttOzmm2/WqVOntG/fPqfl3t7eysjIsLbCaoMpUQAAYI8yA9vmzZs1ePBgNW3aVJLUtWtXBQcHa/ny5cX6XnnllTp8+LD1VVYLTIkCAAB7lBnYJk6cqAYNGmjPnj365ZdftHLlSp0/f15vv/22Uz8PDw/169dPP/zwg23FVm2MsAEAAHuUGdj27t2rHj16aOPGjapZs6bWrl2rnj17KioqyqnfrbfeqlOnTmn+/Pm2FVu1cQ4bAACwR7nSxZYtW3TXXXeV2mfNmjW6+uqrLSmqemJKFAAA2KPMETaUV0FgY0oUAABYi8BmqWwxwgYAAKxGYLNUjghsAADAagQ2S2WLKVEAAGA1ApulmBIFAADWI7BZiilRAABgPQKbpZgSBQAA1iOwWYopUQAAYD0Cm6WYEgUAANYjsFmKKVEAAGA9ApulmBIFAADWI7BZiilRAABgPQKbpZgSBQAA1iOwWYoRNgAAYD0Cm6U4hw0AAFiPwGYppkQBAID1CGyWYkoUAABYj8BmKaZEAQCA9QhslmJKFAAAWI/AZimmRAEAgPUIbJZiShQAAFiPwGYppkQBAID1CGyWYkoUAABYj8BmKaZEAQCA9QhslmJKFAAAWI/AZimmRAEAgPXcFtjCwsKUnJysHTt2OJZNmDBBCQkJioqKUlRUlPr27etYN27cOO3bt0+7d+9Wr1693FFyOTAlCgAArOe2wDZz5kz16dOn2PIpU6YoODhYwcHB+u677yRJHTp00MCBA9WxY0f16dNHH330kTw9q+LgIFOiAADAem5LPRs3btSJEyfK1bdfv36aPXu2zp07p7i4OO3fv1/XX3+9zRX+EUyJAgAA61W5YaoxY8Zo+/btCgsLU/369SVJAQEBio+Pd/RJSEhQQECAu0osBSNsAADAelUqsE2fPl2XX365OnXqpCNHjuidd96RJHl4eBTra4wpcR/Dhg1TZGSkIiMj5e/vb2u9xXEOGwAAsF6VCmxHjx5Vbm6ujDGaMWOGY9ozISFBLVq0cPQLDAxUYmJiifuYMWOGQkJCFBISopSUlEqp+3+YEgUAANarUoGtadOmjq/vuece7dy5U5K0ePFiDRw4UL6+vmrVqpXatGmjn3/+2V1lloIpUQAAYD23DQd9+eWXuuWWW+Tv76/4+HhNmDBBt9xyizp16iRjjOLi4jRixAhJUnR0tObMmaPo6GhlZ2dr9OjRys3NdVfppWBKFAAAWM9DUskng10EIiMjFRISUonP+Kqk50VoAwAAFVVabqlSU6LVH1OiAADAegQ2S2XnPxLaAACAdQhslsrJf2RKFAAAWIfAZilG2AAAgPUIbJYqCGyMsAEAAOsQ2CzFlCgAALAegc1STIkCAADrEdgsxZQoAACwHoHNUkyJAgAA6xHYLHUu/9FX0j2SurqxFgAAcLFgKMhSGfmPdSS9KWmXpB/cVw4AALgoMMJmqfT8x7r5rY4bawEAABcLApulCgKbnwhsAADAKgQ2S6XlPzaQVEtSbTfWAgAALhYENksVjLA1z39khA0AALiOwGapooGNETYAAOA6ApulCq4SDch/ZIQNAAC4jsBmqVxJpyUF5n9fW5KH+8oBAAAXBQKb5dL0vxE2Ke/iAwAAgD+OwGa5dEnNCn3PtCgAAHANgc1y6ZJ8Cn3PhQcAAMA1BDbLpRf5nhE2AADgGgKb5dKKfE9gAwAAriGwWa7oCBtTogAAwDUENssxJQoAAKxFYLNcQWA7n//ICBsAAHANgc1yBYEtKf+RETYAAOAaApvlCi46OJL/SGADAACuIbBZrugIG1OiAADANQQ2yxUEtlTlfa4oI2wAAMA1BDbLFQS2NEkZIrABAABXEdgsl17o8bSYEgUAAK4isFkurdAjI2wAAMB1BDbLMcIGAACsRWCz3CFJkyQtFiNsAADACt7uLuDiYySNy/86Q1ITN9YCAAAuBoyw2YopUQAA4DoCm62YEgUAAK4jsNkqSZK/8kLbXyS9JekBt1YEAACqH85hs9UmSV6S7pT0iaS6kiIlfenOogAAQDXDCJutfpJ0XtLrygtreyQ1cmtFAACg+iGw2eqM8kbUWkuKk7Rc7g9srSVd6eYaAABARRDYbLch//EbSSmS6sm9M9GTJIW58fkBAEBFEdhs963ypkVnSTqev6yh+8pRfeVNzwIAgOqCwGa7H5QX0Lbpf4HNndOitST5uvH5AQBARRHYKkVG/mNVCWw13Pj8AACgoghslaqqBDZG2AAAqE4IbJXK6sDWS1KyKvbxVzXFCBsAANULga1SpeQ/WhXY2ktqLOnSCmzDCBsAANUNga1SnZGUJesCW838x1oV2KaWpEssen4AAFAZCGyV7risD2w1S+31Px6F+vKpZAAAVBcEtkpnR2Ar7whb4ZE1zmMDAKC6ILBVOisDW0EAK29gK9yP89gAAKguCGyVzp1TooUDW9ERNj9JTytv2hQAAFQlBLZKd1ySv6R2FuyrolOipQW2v0l6W1Kwq0UBAACLEdgq3XFJTSTtlnSLi/uqaGArPBJXdEq0fv5jU5cqAgAA1iOwVbrVkn7O/7q9i/sqOIfNiinRgsDWxKWKAACA9QhslW6NpBslZUsKuECfNyRtKMe+XJkSvdAIG4ENAICqhptxuUWupCMqObB5SRpXzv1YeQ4bgQ0AgKqKETa3OSwpsITlfSuwj4re1oNz2AAAqI4IbG5zWCWPsD1a6OuyBkCtvK1HvfxHRtgAAKhqCGxuk6CSA1vh22qUFcQ4hw0AgD8DApvbHFbeqFadIsvrSsrJ/9rOwHahc9iYEgUAoKohsLnN4fzHoqNsdSUdzf+6rMDmym09LjTC1lCSTzn3BwAAKgOBzW0S8h8LB7aayjtvLSn/+8If1n6LpM+L7MOVG+eWNMJ2Iv/rxuXcHwAAqAwENrcpGGErfKVowYn/yfmPhQPWY5IeKrTMS/8bCXP1HLZL8r/fnf8906IAAFQlbgtsYWFhSk5O1o4dOxzLGjRooBUrVmjv3r1asWKF6tevvgCAFgAAIABJREFU71g3depU7du3T9u3b1dw8MXweZclTYnWzX8sGtg8JPXI/7pOkXVFvy5NLUln8r8uPMJWcJz35D9y4QEAAFWJ2wLbzJkz1adPH6dl48aN0+rVq9W2bVutXr1a48bl3UC2b9++atOmjdq0aaPhw4dr+vTp7ijZYlnK+1zRkgJb0XPYOklqlP917fzHwtOlFRlhO5X/NYENAIDqwm2BbePGjTpx4oTTsn79+ikiIkKSFBERof79+zuWf/553vlbW7ZsUf369dW06cUwbVf05rkFga3gHLaCwNazUJ+iI2y5qtg5bAWBrfCUaEFgO5j/2LBQPZ/pf1O1AADAHarUOWxNmjRRUlJeWElKSlLjxnknvwcEBCg+Pt7RLyEhQQEBF/oczuqk6M1zi57DVjCKdlehPkUD2ylVbEo0Nf/rkkbYjhTZ9w2SBivvs08BAIC7VKnAdiEeHh7FlhljSuw7bNgwRUZGKjIyUv7+/naX5qIElTzCVvgctusl3SxpYf6yooHtuCo2JXpaedOxhUfYCoJiiqTzhfbtl/9YXwAAwH2qVGBLTk52THU2bdpUR4/mncuVkJCgFi1aOPoFBgYqMTGxxH3MmDFDISEhCgkJUUpKiv1Fu+Sw8m6hUfARVCUFtv8o73Ybb+cvKwhsBaNvBYGteKgtrpakTEnnlDfC1ld5wa0gkJ1S3kUJBYGtoB6mRAEAcKcqFdgW/3/2zjw8qiLrwy+EHWRJWAUkjLKpqIzDoowbIgg6yqgI4oIIKiquOMo4Ks74qQzjgoOKDoMoyiKjsjiiICCOICA7QdZIgLAmguwJkFDfH6eq7+1Od2ch0CE57/PUU/fWrVu3qrvT/cs5VaemTqV3794A9O7dmylTpgTK77rrLgDatm3Lvn37Aq7T05ttyFtQz56HLjqIB24ERuLNawu1sLl5gP5FCJGoiAiyI8C5wDTgjwQLtgw8i51a2BRFURSlKJDb7uInjXHjxnHllVdSs2ZNUlNTGTx4MEOGDGHixIn07duXLVu20L17dwCmTZtG165dSU5O5vDhw/Tp0ydW3S5kXPDcBkAqYsk6DOy35W5hRQpw0B67VaKhgq0iIrai4cJ6HAWcxTIBEWRHEFdpBmphUxRFUZSiRcwEW69evcKWd+zYMWz5gAEDTmZ3YkRoLLaqiFjLtOcuvMZ+PMEWbg4biBgLXnWbEyfYjvjarooINrcYwS/YQi1sbRAX7S1AVi7PUhRFURSlsChSLtGSRyTBZhDR5ixs+/AC3oabwwZ5W3hQBc/C5uK6VUUsaC7cRzQL23WIi9a/UMLPdcDv89APRVEURVHyQ8wsbAqIRSwDTwBVJdjS5bewGWSFZxVgPl5YDr9LNBr1bJ1NiIXNUQ2xoDnBdhhP/DnB5ixsZ/na2hTmGS8jCyY65dIXRVEURVHygwq2mOOPxVYNb/5aqIUNxC1aHYmP5nCCrb09TiU8zW2+FrGwOZxL1G9hc67QUJeoE2xnRnhGlQjliqIoiqKcCOoSjTl+weZcoiDCye044MoOAo1C7ncu0beBr6I8xy/Y/Ba2cIItkkvUb2ELR2V043hFURRFKXxUsMWcTUATexwq2Bx+C1vjkPt3+46rEpkWtu3t5F2w+S1spfBWlkYTbDWBuCj9UBRFURQlv6hgizlLEAF0JjnnsDkO2PwQnpULRHgd9p2vIzLNEesaBLtEq9nknhtuDls1JMCvmzcXSbBVQj5StaL0Q1EURVGU/KKCLeYssnlrwlvYDgLZvmP/llKZyJy19fa8MpHxCza/ha0WIrSiWdiqAGf77gk3h60C3sepTpjriqIoiqIUFBVsMWc5EtPsCmQNiH/RAb5z8GKxOTJsWTNgEpEn/VdB3JnhLGzOWhZpDpvrx/k2TyHYwnYOMIVgq5rOY1MURVGUwkQFW8zJBFYBXe15qIVtn6+uX7DtIthteojIFramNg9nYXPzzUIFWxmbu90YLrD5QoIFWyfgBuAiX5la2BRFURSlMFHBViRYhFjJ9gMzbFk0wbYHEXn++WvRBJtbqPCzzY+GqeMXbKWRxQMAW2zeEplLtxqxppW15W6Fq1/EqYVNURRFUQoTFWxFgu9tfificgRPsPldoodsng4MBv4cci2SYEu0+WabOwvbL746/sC54FnJXFy3C+zxdnvuRFk4waYWNkVRFEUpTFSwFQnGIvHVpvrKolnYfgHmAV+EXIu0PVUiIshcW87CttlXJ3R1am2bO8FW3T5zhz13Ai0vFrZLgE/Rj5uiKIqiFAz9BS0SHMdzPTqiLTpID9PGIeTtDLdFVSOCt5JyFjb/M/0uUchpYQMRlM7C9i/gGjzB5kSaf2N5x9XAzWi4D0VRFEUpGCrYiizRLGyRBBt4btHWeOItkWBrmhNs/rLcBNthYCawEnHHNgAeJqeFLYWcFja3U0I8iqIoiqLkHxVsRZZwc9j8LtFQ/IKtGvAD8JQtC7WwhbpEs3z3hwq2bTafgVj9jgN/A74GLsULrusE20ZyCja3F6kKNkVRFEUpCCrYiiwnYmH7DRKWoxNQAxFV0Sxse33X3KKD2r5rfwJeDHneciDBd+5E2jpb7p9PpxY2RVEURTkRysS6A0okclslGoq7VgXPTdkGL37aJl9dZ2Fzc9j8gi3UwrYfeDXM81aEnLswHz/ZPBEJAQIq2BRFURTlxFALW5HFLTrwW9ice/JncuKsb5Xx4q6VAXrbY7+FbSrwf3iCyv+MUMF2gPD4BZs/gK9r079JfTiXaGPgY4K32lIURVEUJRwq2Ios4Sxsa5HN3+eHqe93iTa29x0CetjyTb66m4Dn7DOOEd7C1siWZxOeNLwQH27T+cN4YtIv2JyFrYavrBNwu69egi2rYM/7AvdGeLaiKIqilCxUsBVZnADbG1KeGloxpH5lxB35MzAa2RVhss3DsY/wgi2eYKtcOJYDvwI7fX1Is3luFjY3/83NdXsamI6MrzEyZ65fLs9XFEVRlJKBzmErssxEJvsvyWP9UAvbeiTsxsO53LcYWOo79293tSmXe18FmgOXh/RhE+EtbOEEmws90ggRezVtu/XIKVYVRVEUpWSigq3Icpjwk/0jEWphm57H+7qEnPvno+VmYZttk9v43fUhBU+wlcdzc0YTbPXwFizcZPMquTxfURRFUUoG6hItNjixlIiItk0FbMcv2PLahptnF06wVfPVi+YSrYu4Vif66pyRx+criqIoSvFGBVux4QiyQOB8e54SpW40DOF3QohGOMFWDVlk4ARbFrlb2HYAnyFhR44QbGH7CFmkoCiKoiglDxVsxYqDeHHXCirYwJvHll/B5u7baPPn8GLCbSGyha2KTTuQGHO/Bf6BeOydO/VW4Ko89KUawVY9RVEURTn9UcFWrDiEuBaPA8kn0I5zi27KY/1QC9t04FPgcSTeG4iArIH3kfNb2Ny2Vi5MyE94K0+rIDs1lCNvLtIPkNWxuVELuBCIAxYA1+XhHkVRFEWJDSrYihV+l+SRaBVzIcO2tTuP9UMFWybQHUgC2vr6BGL9Ko0Xk60S3rZWTqSBFwi4CiKuwNu3NBqJwJl5qPcXZCVufdvH9nm4R1EURVFigwq2YoUTTGtPsJ0M8rdoIVSwOVbjLUR2gi0eicvmPnrhLGzg7bBwBhLqwx3nRnWC9zGNRB3bbnPfuaIoiqIUTTSsR7GisATbFiQgbl6JJNh+8h37BZv//4RKhBdsfgubc5/mRbBVI/LuDH5cMF9nAawdqaKiKIqixBwVbMUKJ5jWRa2VO92ReXB5JTfBdhxvo/l4ZN6Yw1nYjhAsEgtiYSuFCLbMXOqB55JtZ3MVbIqiKErRRV2ixQpnlTpRC9th8iZ6HNFcou6621KrMZ7FDDwLm3/+GoSfw5abYDsD+UhXzKUe5LSw5dUlWgaJc6coiqIopw4VbMWKwnKJ5pedwDRgbkh5MhJTbS+em/VCPMGWjYirugS7QyFYsOXVwuZEWF7msDkLm+tLXi1sLwCL8lhXURRFUQoHdYkWK9IQ8ZR+ip+bRfiwGFmIe9a5V5cj21itt+c78QTbxpB7/S5RZ2Erj4T3OBqhHy7+WjnE7RptLlv1kPOKiDg8GKaun/OAFrZfB3KpqyiKoiiFg1rYihUvAZfFuhMhvA18aI+XI4F9ayFiaidiDasB7Am5L5yFDXJa2SoBDe2xX4RFc4tWRESdI8vm9ch9/1K3QKJJLvXyS3uCXcWKoiiK4qGCrVjxKycWMPdk8B7whj1ejgisdohAO4SIp+qI29RPJiKk/BY2yCnY/obnovQLtlC36O+RRRBOIPpZY/OXkHAm0USbixnXLEqd/FIKiQn3ZCG2qSiKohQnVLApp5DlNr/KHh9GguGeQU7BBmJlc4sO3O4LoYLtUmTBQB2iC7ZLgXOBBr56bqHDMpvfiFi5ukYZgxNsTX3tXhylfl44A9mC6+wTbEdRFEUprqhgU04ha5D5Z/uB+xER5lyM4eK+HcQL6+HiuPkFW2lkEQOIi9K/h2ioS9QtKqiBJ9iSbL7U5s5NelOE/scj8+jAE2xvAH+PUD+vuH4nnmA7iqIoSnFFBZtyCjkGPA3cggiww3jhNMJZ2A4gFq9qeIsS/NtTNcOzpDUhuoXNPac6nkt0pc2X+er9giygqEBOnHXtOJ5gi+fEd0lw/W50gu0oiqIoxRUVbMopZhjwjT3OwAuiG8nC5kSME2x+C1sr33Fugs1Z2Kr76o0BBgDf+57/MuKGDbe3qLMGJuHNYavOiQfddf2pTd5CkiiKoiglDRVsSgw57DuOZGFz87qcYPsDYgX7DrgbEX0/IxavaKtEnRWsBp6FbTuyitUgIVH2ApPttbPC9MdZ2L5DhGM9xPqXQPg/pWqIG7hVmGsPA3f46jnCPVdRFEUp6ahgU2JIhu840qIDZ1FzQXmvQwRXfeAaxNq1hpxz2PJiYdvnu54ETAe22vP6YfrjLGwLbN4UKItYCeNtWUVk1SfAOcjm8uEWJTwO9PH1yaFuUUVRFCUnKtiUGOK3sIVzibrAtDuBFfY4HtnmqhXwL8RCth4RR/GIpQyCBVspvNAgTrAdQubUOXoAt9uyNCILtkN4CyB+47tWC/lzWo+IMfcsf+6IQ2LHOUufX2gmhnmuoiiKUtLRnQ6UGJIXCxvAD0hMtgzEgrUBEXP32+v9EYF2LrLFVW2CXaLxeB/1GvY4VCD6N7vfRnjB5rbQ2m3P/WE4aiPCsAHQ0vcsf+5oaPvgrHJO0GWhFjZFURQlHGphU2KIs7AdJdja5nCCbZ7NncVtQ0g9t8qzLjIvDYItbP5VnM7CFk4gOiIJNrdJvRNsoRa23/nqgSfUQi1siTb3C7ZDwGbUwqYoiqKEQwWbEkOchS2SeHIC7YeQ81DBthAvRIfbRD6cYDuOJ9jCuWAd24lsYdtp+3ucnBa21vbYCbZILtHGNj8DsbRVQ+bTbUYXHSiKoijhUMGmxBBnVYsk2Bbb5ALbRhJsAMNtnoiIKb9gcwsOtuDFYcvNwlYHWVDgJx5ZoXocEXyhFrZQwRbJwtbYd+wC+e61bet+ooqiKEpOVLApMcRZ2CJZu75ERNBRex5NsI1DQn+8adttiljK2uJZ2NYhAqkukB6lX9tsXi+k3O9K3Y23Kf1xxCJ3IbJooRYi9iJZ2BJ9x37B9muYuoqiKIqigk2JKblZ2EI5AGTjrdIMbetsYKo9bocIrscQC1uWve9MWx5O9DmcYPO7RSsg21L5BZsjFeho6/zPltUhuoUt2x7H47lE94apqyiKoigq2JSYkpuFLZSdSNiMo7nUy8CbC3YTshggDdgDVLbl66LcH06wOSEVKtiOIXPPGiOi8GNbXo/Iq0QbA2t915yFbS+eMFQURVEUDxVsSgzJr4XtKaBLHtt1H+1yQGfg25DnrI9yf34E2z682G/T8TaUr0d4l2gF266bl+csbE6whdZXFEVRFBVsSkzJbZVoKLsRa1ZuOCG4E3gS2VHgLjxL3nFkO6tI7LFt+BcHRBJse/Hmw43DW6Xqt7BVxLOaXWZzt59qvG3buUT9z8oN3XdUURSlpKCCTYkh+XWJ5hUn2LYDrwEfICLNCaItQGYubcwHrvSdR7OwrUVWeE4BdtlnOQtblq3ndjO4Dhn3JHt+Jt7cONd2qAvVcQ2eS7eVfXbzXMahKIqiFAdUsCkx5BdkIUE092RBcEJwe0i5E0TR5q85ZiCrPt2G76GCbY/v/C0kxMchZDFBOp6FLdXWawG0QQTbbCQo8F48K144l+gkYIA9bmD7dI89b4PEcDs/D2NRFEVRTndUsCkx5CCymnJyIbfrt7D5cYIoLwJxhs072jyahe04XsgRELfoOUhoj022bCQS4PccJFwJiGXRCbZQl2gNoBvQ1Zada3NX/xybhwvwqyiKohQ3VLApMSYj9yr5xgm2bSHlTmTlxcK2AllM0NmeR5vDFso24AJ77EKQNEHm1G3EE6h7CLawOddwdbxtrprY3Lk+G4aUq2BTFEUpCahgU4ohkVyiKcjigw/z0IYBvkMC74KIqEzgiD33W9hCWYAXVHeTr/wtJFacW5iwBwmyC5BMsIWtjT1ujFjqWthzF67ECbYGeRiLoiiKcrqjgk0phkRyiQJ8hLepfG78DDQCSpFzw/hoFraZvmN/kN+lIfWcRW0+ItiOIKLQL9jiENHmt7CVxtvHVC1siqIoJQEVbEoxJJpgyw8pSBy3M8kp2HYBa4BlYe5b5KsbTbC5hQsf+Mr2IvPX2uDNtWuCJ9jqIWKtPLLAwS/YKiLWw8SII1IURVFOT1SwKcUQ5xINncOWXzbZPJGcgu0YshDgizD3ZSOBekHcn5mIeNwVUm8LsljhE1/ZXqAlsjp1rC1rY89X2/MrbL6MYMF2AeLyHRxtUCdAKWTrr6sLud36wNOF3KaiKErxQgWbUgyZhQSx/eUE29lk80RyCrbc+BSZ37bT3hdqXQN4HbGc+efB7cVzh35lz/9gz93KVSeY5iA7J8Tbc5ffzslxlVa1felQyO32BoYglkxFURQlHCrYlGLI94hoMSfYjttVoTH5F2zjkAUFh4GBwEth6hwhfOiROHttBbJJfSskAO9UW6czsB/40Z47ceYC7pYF+uejr3mlqs1rRrj+OzwRmR+ahrSvKIqihKKCTVEi4gRVIvkXbCBuUxDxtiCP97hnLEc2uf/J5j18bdRANpnfas+dYHMWtq2IyCtszrB5QoTr7RF37W/y2a4KNkVRlNxQwaYoUdlEwSxsBcWtHHXWsz8BFwGfI3Pz3OrU4eTcpD7ed68L+wEy164w/tRzs7C56/l1bTYLuV9RFEUJRQWbokRlEzLPzO33ebJxz3CC7RdkNaojCVnosBZZ0HAcL5huDcRVugaxcpVBdpJYgbhlT5RQC1sdZGGE277L7ZeaH8GWgCc0VbApiqJEQgWbokQlBU+AnErBtijC9euBW+3xMURQOpdiPBIqZD0i1hIR61oZoF8h9M0JKifYhgG9gMtCrtfLR5vNfMcq2BRFUSJRJtYdCEdKSgoHDhwgOzubrKwsWrduTY0aNfjkk09ITExk06ZN3Hrrrezdeyp+QJWSzWKb7yF8zLXCZgIixCJtn3Uo5HwtXoy2Gkg/N9jzpng7ITQFrgR+QObE5ZUvEYvdkwS7RDsAPe15bZsXxMLW1Hesgk1RFCUSRdbCdtVVV9GqVStat24NwKBBg5g1axZNmzZl1qxZDBo0KMY9VEoGk5FVjwl4bsqTyRbgjXzUX4tYqUohFrZfCQ642wSJA3cQiQ23HlmFGkrDMGUArYFO9ti5RMsiYu0wEnPOCbaCzGFrhicgVbApiqJEosgKtlBuvPFGPvxQ9oD88MMP6datW4x7pJQcjuReJWasBSohgstZ2HYjwq2pTRuAu4ExyFZbV4W00RwRil1DyuMQodoc2fHBL6jaIBvZ/4LMZQPPwpYfl2gTZAuwQ+RfsCUAjwP3kP9QIoqiKKcXRVKwGWOYMWMGixcv5t577wWgTp067Ny5E4CdO3dSu3btaE0oSglhrc2b41nYQCxpzsK2AfgMuA/ZWeHWkDbOt3lXRHydY89rIl8RZZG5cH5BdR4i2NI4MQtbI2Se4H7yL9juQIIPjwJuyOe9iqIopxdFcg5b+/bt2bFjB7Vq1eKbb75h7dq1ud9kuffee7nvvvsAqFkzUvgBRSkuuL+NFngWNpBtrLoh1jcXcPcIMAW4CXgQCcYLErYEZAeF82xKxBNiABfiuURBvjo22vZDLWyRBFtfZPXqULzdHc5C5gmeTf4Fm//vOz5iLUVRlOJAkbSw7dixA4D09HQmTZpEmzZt2LVrF3XrSviAunXrkpaWFvbekSNH0rp1a1q3bs0vv5zo1kSKUtRJR0Tab5HQI87CNgoRcOXx5rQBjEdciY8hAqsKnmBrjixMqAXciyfEQARbVWTOmiOche2ofWY4AfU48AwSFLgCsll9bbw9VfMr2OLxFmFUi1KvDGJdDDd3T1EU5fSgyAm2SpUqUaVKlcBxp06dWLVqFVOnTqV3794A9O7dmylTpsSym4pShFgL/N4eOwvbPJvAWzUKMA3Z5/QVJI7b54hg22+vH0YWVzyJt8J0NxK89wxEXDk2Ihva10G+SqoCyfZauHlsjZCVtomIW9YtdNhMwVyi8Ujw4GO53PsH4D0Kfw9URVGUU0eRc4nWqVOHSZMmAVCmTBnGjRvH9OnTWbRoERMnTqRv375s2bKF7t27x7inilJUmI8XGPdXX/mzyI4IK0Lq90Wsbw2RGGrbgZnIXqBTkNAf4/EEzix7/BOQirgx4xDB1hIRcs7KthaZ73amre+ogVjzxiAWuIfw9lHdggi2xuQP5wJOILqF7QKbR1oJqyiKUvQpcoItJSWFiy66KEf5nj176NixYwx6pChFnVl4gm2Pr3wOIqhC2Q90BG4B/oPMK/sM6I1sf+Xiul2BzHtbgljE6iMx2fYgbtMUxMIG3kKFn5A5cucA3/ie2cjmm4F3gLeAG22ZE2wFsbClI/Phot3rXgMVbIqinL4UOZeooij55X94G83/Gq1iCP4N6VOQWG3ZiAs1G7GkpdlrIMJuPxLKYxsS383NJXV7lybZ+teGPOssm29GggMfRwRiNmJpK6hg+9XemxcLW4ModRRFUYo2KtgU5bTnEJ742hOtYghb8dySKb7yo4i7E0SQbbLHpZHFAVvxVqc6C5sTbPuA/yIWvJuAv9hyJ9i2IHPiFiOu1O3IatWCCDbnEo1mYauErEAFtbApinI6o4JNUYoFXyPuy/yujHZCLyWk3G04vwtPsIEIq3uQQLyQ08K2D9mcvhLibv0/xB3aCFnQ4Pr3tc3dIob9SLy3vAbALQ1UxxNskSxs59m6hwlvYWtIcHiQQXgCL7+0w3MnnyhlkNdDURRFUMGmKMWCV5FFA4fzed90xOK1KaTcWdDSkHlirt39iIVtq+86eIJtP/AdYolzK09vQyxs/hWm023uF2yQdytbNeTrKzeXqJu/NpvwFra5yNgfRBY9vIJYCM8IUzeUygSLvdHAkDzclxfGA58UUluKohQHVLApSrHgKLCqAPeNRIRM6PZbfgsbeILuQEi9TMTK5TZx32f7chuyB+k8oBdiYfMLtoXIfLZl9twJtl6Iu3RmLv2uYfPcXKLnIWLzf7aOX4glIEKyHPAi3sKI5sBLUZ7t6v0TT3iChDc5K2f1AtEc6IJuuaUoikMFm6KUaAyyMjSU0Dlqm22+P0zdeUgQXP/1L4FFwDjEytXK1wbIYoOmiGXQf98bSJDeK4ke6NYF5t2DZ2Frisydw95fCbH8JeOJRb+VrZnNv7ftucUJm4GLIzy3CSJeuyAuUOc+LYOIyMJa2BCPiLVLC6m9wuAtoE+sO6EoJRYVbIqihGEFMAP41p5vsnmohQ3E3Qiy8vNQyLVRwCTEirUp5NpRRDBCsBD8FyLW6kfpnxNsvyIWtrKIO3IcEhNuFuLmPAcRbKm2vl+wtbD5NJtfafN5RLaUufAlnRHBVw0ZW4Itr4XEmTtRXHtFJZRRaaAf8Ff0Z0NRYoP+5SmKEoYMRJQst+ebbB7OwjbLd82EXDsC3GzT21Ge5xeCk23eKFxFi98l6vp0ISKYzke+2lojoUg24M2581vAmiPjnGPPr0BWrSYjOzWEC1NZ1+a98CyANe1zHdGEZl6ohCf6iopgq4/0qSFwTYz7oiglExVsiqLkAbeKdF+Ya6uQxQfhxByIiPs8wr0OF17kaTzXaTTB5neJunZ/Y3O3TVcnRGQk44UPca7O8ohgW4+3nVY84jrdgoixcJvYO8HmF2i1Qs6juUUvInihQjjc2Lbb/haGxS4/tLb5b/FeS//K2b6ntjuKogAq2BRFyRNfAA8jCwJCMchOCetOoP2diHtxKN58s0ZE/ooKdYn6uczm1W2+ARFr7yOb2k9BBGY7ZK7ePrz4dZsJ7z51hNsjtRbBIixSvLfKyKrUf0S47nDu0MXI+MMJx5PFlchespch/fyXLXeCbToFs7ANRrZQK3WC/VOUkosKNkVR8kAmMun8eITrAxAX6ongLHSZyGKHljbvFaZuDWRnhmPktOxdEnLuLGjPIOLsBsSCVhNvNayzIG7GE4zh5rHVxQtx4naVyKuFrSsi2q4j+levE6MrbX4qA/62sfm5iEg7G3mtzkZe6y8RIRxOuObWbjtk7IqiFAQVbIqiFALHyTl/7UTYjOw1WhO4PuRaAmJ9c1axUAtbZWCvPc7Ac7futm1dC9xny5wocjs7bMGzsEUSbIuQ2HQupIffwrafyILtZl/91hHqgCfYVtjctVcLSIxwz7lR2gvH+Xh7uYKIwrrIPECQBRkNkQUVZyHu5k14r1d+n+cE3pP5vE+JPVVQy2jRQAWboihFkM14Mcj8oS3KIa7XWxDRBMEWtqM2n4tY4JIJFpILEKE1DpmwRAAUAAAgAElEQVRPNsWWO8G2GVnpugfPsuX/mqyHCMBLkFWoWXgWtj32fr9gG47Ea6uAWJc+QUKa3IInzEJxLlEnjlx7E/EWZPi5FviJ/O2y8BTwge/8PzZdZM+vwht3E8TC9jOeRTIvgq227VdLRAweRBZ2RBOrStGiDCLU+8e4HwqoYFMUpUjiFh5kIdY0t/LyEkTQvAHcb8uche04sMQepwDfIAFzI7ECz8XrF2wgVrYWiNg6BDxgy+sCOxDx8ititXMWtl+Q1ahOYNVALHl3IAKoCjKP7gfE0rQdbxGDHyfktthnNETCiVyJhBIJtXa4XSZcXLnf4G0dBhLE+OGQe85EXJvVbHvnIwsMnOi7wFfXL9jS7JjPBx5FdmSYi8xhDP056YgIuysR8fZvxPI5MMyYQWK83RfhmhIbaiJ/b51i3REFFWyKohRJnHD60OZuXlonRMQNxhNnLiSIC8nh7r8JmVuXF8YjVoQke74F6IBnRbsGEVxVkAUSjnQ8C1s6IvScZe4WxCJYw7Z9FBE3DyJbYJVHhFwo8cg8uUw8AXi3vVaBnPPHnJh1q2ofQ7bJcqFPXkL2dPUHIq7nu6c+4kYG+UkIDXDcxrb1sy1bjYjAYUBbO46bCHaxgveeXWyfvR54D3ldEnOMGp4jsphTYoP756FdTHuhCCrYFEUpgsxDrGQvIuLFhZe4BnFr+uO2ZSFWMP+CAb/oyAsHEDHhcO08jrhNL8azhu3w1XOCzVnYtiBbVFUAbsfb7P4GZPXlYSQMyrOItemKMH1JwJufl4rMIevtK2scUt+tInVz7px17HybGiPbcv3Wd49fsLltxdyOF5/bPBNxy7q5dy4m32pki68t9t62iFAeZK//ERF07ke+rc13IhbLbERUho6hMWId1E3viw7OPV+X6GF2lFOBCjZFUYogy5Af782Ia/MBJEbbxfY8lD2IW9MJtfwKtlDeRKxawxFL3ll4E/L9FrY0gi1sbrXpeYgYewdvrt0c333HEWtbOMEWjyfOtiLzyhogq3TBizf3HvK6OMHmflCdYGuJCEWHs+ZVwLO+NcJzpb5g++h2t0hBrGKVEZHpylfb/A1ELB9HQoC0QbYam4BY+Nx8OOdm3YlYQcchsdxcHwDa27yMb3ynilKIuA4XKLmkk+A7VitbrFHBpihKEac3EpNsCBJaItzE+9sQN+lk4O94m8oXlA147ljnenUhKUItbLXxLGybbLkLcbIcmbMGwYIN4DtEzITOY4tH5omBCLbSiDAagYijxsj8s75ADzyX6FmIsHNCqCXwB2AhMvnfCTb/85yF7SASA+8qPLfyRuR1AG/PVxAL3AhgpK/sfSRW30Bk3p1BBNA2Xx0ndF9DXMv3+6619x3nZ/FEYdAe+Jicq5GLMtcg7+3Jxr8wJjRcjnKqUcGmKEoRZx9iiToP+QFZGaaOc6GmI665rEJ8/jJEKLkfyNA5bPHIXDW/hc0JtvVI7LJ0JHCsn+9sHrr9lN8l6rbUmmufuw2xQF2OzAtrTrCFzVnXDuBtUD8JsY79HhFR/kC8zsK23lfmxrAR+BTZD3ac7/pWZB6ef9/YLKA78DoyR+0tZFuy//jq7LL5KuT9cta/BGRhggvK3IxgWiOvXVVODm6RSIuotYoWzyPzEk82/iDOhW1hi8u9ihKECjZFUU4DshBX3OHcKp4EDiCCpiYwBs/6BZ678zBiQduJzP26BBF5yYglqgE5+74EsWCFLozwu0RdTLipNt+ICDZnLauDCJl99tjNF5uMiLEsxFI4B7Fq/Q5v/tpOPAubX7BlAnch881WIJu+HyN3jiAWtrmIaD4fzzq5n+DxzwdaISJyF+JunopYL5sBFRHLYWnEitgOEXXh6AX0zEP/IuEE7Km27J0I9Tg1O2AkIO/rLOT9Kqxt0m5ELNL5EeH3IuFoSi4q2BRFUXLlb8gcurtDyqcC7yLztZYirsDNyMT5zciPHXjx4fwcR+aBtUWsd+7H0O8SnYcIpzH2PAVxiXYgWAAttPl1iFt2nj3/AhFmc+z5VXiCbT4i1hLJua3YR3iu0YKQbe93cwl3hlz/EZlL94Kt2xVxZa+zx+mIJW8oXhy+K8M8pzxizXvhBPp6ugq2mohlF2QOZZWT8Bz3WZxvn9WqkNr9LeLWz49V80ngkUJ6/umJCjZFUZRcGY+Ih9DdHLYhE/83+MqcSzEve6t+gFgapto27kREiBM6GUi8MyfgNiLWuguAsb523Dy5ixEL13xECL1ty3cjrmQn2I4hArO6rfdpHvpaEDbZPFSwLbL51cD3wFeIqF2HzLHbgozjDmRMEF6w3YjM2WuCCM8ZRN4NIhInKtguwNu31k8cXvDnwqQqUMkeu77/iHzubi3kZzn3vPuHoLDcom7e5Tl5rF8L+eeiPp4wrYInWP3cgbdYqVaY66cvKtgURVEKFSfY1ketJWQgQuQ+5MdxDCJaRkeoPwOZU/cvxOLnQnG4+XG/2vKViAVmlu/eb5EJ9o0QAeVE5jPIvLKTwXbELRsq2DbhuZO/9pV/j6y87YZYFusgP8qLELepf2UpeBbP0kiolGsIXhnrqEpkd96Zvjp17fMujVA3lBqImHkmzLWX8IRpYeKPw3cm8holIkGQhxfys5yFbSfynvkF2/ME75aRH9xr3iRqLQ//opQmyOdjOxILMJTeSL87Ej7O4emLCjZFUZRCZZPN82JhA1nBORJZNbkfmatzJELdhYg76X5EnLln/IhYqe7G2zt1b8i93yKWmS7IXLHJiIXq9Tz2syBkI9txTQ9z7Ueb+wXbWESQuMUazu37CvJz5Q/OWxEJpOwsjXfYvDXiOnvTV3cewVZE/+rHMxGRCGJle8zWj7QnrJ+bECvahWGuXYLM42sY5tqJECrYzrfHM5EVy6Gi1s8FyIKRq6PUednWAfknwll3FxAs2HogArkgOAubX7Cdi3y+w+3h6xds1yE7a1RAFrr4ZUx5W/cj5LOX3z1vI9GKorKfqimuadGiRTHvgyZNmkpausWAMdCxAPfG5bP+WAP781i3ioGfbd8mF4HX6Q4D03Kp84GBJQbKGPjRwGED7e218+xYehhIt8fGwHoDqQaOGYg30Nh37WoD1QwcMPAv285BAxPs9f4G/mePO0Xo0xkGKtvjmbbuVntex8AvBi43kGav9Srk1+0233geMfCoPe5j83a23nADT9j+vmygvIHvbJ0sA1UjtL/PwCED9QxsMzDSlv/J3lvNyGcp277GpQowhl9sWwt9Zf1t2Se+ssYG5tp+/GifucPWc/1p76t/pS27zsA6A/8x8JaBj0/g9e5g27y1kN/H8CmablELm6IoSqHyX8RK820B7s3OZ/1XgHvyWPcgYvX5mmCrVqz4GFlgEI37kBAmWbZuKjKfsAqyvynIllluF4a1iNWmARLCpAte2JTdSCy/Tvb+e4EnkMDAixCLZXc8d6ibEH8bEgDZMQV5j+shLrdfEItRNdvXBGQuops/9XsKF2dhy7bPPR+xEH5vy5sjVqc+yC4V1wF/RkLj/AYZZxw554/VRV43N0fuWYIXwLj9dhMRK29p5DWOZtFz1EEWwFyCWMZcuBC/ha2RzW/Fc2W+iARkrovM89xkj5ORxT5HEWvgPXZMVyOflf8hluuWyCriP5K/MCJ+a5rbRzi3z+rJRwWboihKoZKJuOPyK74Kwiryt2AgDREx756c7hQ6R/Hivf2CzE+qj8Qgc4LjZ2QBBciOCyCv/S/I6tuOyIrTQUhYk+eQifTf48Uy24a4hjvg/bC7RQhPIj/a1ZD5be2ReYfjkJW+ro0WiLgAb/L/IfIn2GogO1i87SvrT3CQ3HrI3MUteC7RVcjcyaNIWJSzESF6Dp4oamHru3mNfsH2lG3vWnu+EhG0FfAE2yabJyJuZ0cdm9+JtzAk1H14GxKY+Gu8AMUr7Hide/os5H1aj7y2Pe19ryHzMV/Bmxf6DRJuZw4iyEYh70NPxNV+ABFszewzKuHFKAR5H/1ucT932DE/Ysd2I/J5Kqj7t3A5JWa+WCR1iWrSpElTcUsjDWQaGGVgjy2rZ8RlVc2AMTDHiMtzv4FfDbxvoJI9NgbGmWDX4hX2+jYj7tX5Br410MBX5xoDbXznxsA7xnO59jWeO9WlUTavYeAiAy1CxnKHgYd85yts/Uwj7vE77Hmq8VyPHxtxbX9v+7jfwJv22ioDkwx09/Vhss0n2fwBmz9j72lgxC1sDKy0eVff/X1tvXh7/pjxXMjGiBsS+7r9z8DvjbhKZxg4y16bbcRVnWZgi71vmM3b2jrf23rn2jEZA7vsc93r4+65yZ6fa/v3qS0/4utPz5D34kFbXtNAkoFk32va0ojr8w1fOykGXrTnQ2x+ninYZzbvKRfdEus/vpgNXJMmTZo0nXbpegPGiFj7Mcz1l4zMP2trRNhkGZnThBFhY4wIocpG5moZA03s9dZG5rn928BO44kbY+A5AwPs8ftGxF8dIz/6h2zbh4w3xyrDyDxGJ/bWGNhgoLSvr0lGRAkGzrd1f7D5xSHtXWnrzTIyr2uCkbl4xkA/e+0zA6sN/J+v366OE6uXG5lz9769Z4SRuYF77PWdtjzZnnfz9Xe/EdGUbEQcujmE1e1xpm0vwx6/bkSsHjMifkb7+nWdzRcY+I0RITfaPudCe71GyHvb3cBu+zx/ebwRgdjdV3aBbT/JwHYDY4w3F9L1obWBCvY9cGWvG0/MZ9vX2Qn3x0zun88TSyrYNGnSpElTMUnO0mMMjM9Dfb9AamjgQyMT8TGepahKyD0DbfkiI5PXkwx8aeAjI2KntBFrnqu/2Ih1zhh4webLjWfxe9XX51vsPZWNiEljoJGBP9vjP9rcicsbjAilf9v7VhuZTP+6vZ5mxMKIEbF61MB044nR0HSWEQvk/+w9PxsReu61mGXLnei7zDfOFUYEljGykMEYeNjA73ztZxr42oj170cjiy6cOPJbNasZsYLtNfCFfS3+mof3M68Lc8obEaKv2fH9bGCwfXZfIyLyJQP32bKBBrrYe8sZWRhxxIgFFSOLX17M47MLnlSwadKkSZOmYpScdef/TrCdJkasZqHlzvpjDDxpxA2724hl6fMw9R8ynvg6x9YdZ6+ts+fGeJaszQbu9T2ju4F5RgRiVVvmVplWN2J52m/gTCMC559GVlUeNZ7lDeO5QrOMiBS/iDJGREqcHc92256zHLlVmsNtW/WNuF/9YnaKr822tr3/Mzndj0/Y8mNGVtI6l25NI1arg742R9pxGAP3nOD7GZousq+nW0lrjLcKdaYRi+d6+7qH3tvdQG/feUFWw+Y/qWDTpEmTJk3FKL1rwBgJZXEy2q9vRPS8Y89dyAxniQl3TzPjza1qZ8RqhpHQK869dpsRC1am8UTcUSOWwmwDz9t7nLVuvT0/x4ibcbstv82I8KpngvtQ2sB7ts4jvvrf2DzF1nvanve1+cX2GbmJJjeH7KAR96IL+/GcLV9r85YGrvW9Zn/3tbHI1nPnd/rqFSQUTl5SGQN/MPCs8ebEPWifmWn7GuvPtCQVbJo0adKkqRil2w0YIxPcT9Yz6vqOKxi438j8uXL5bOcx29ckX9l/bNkWI5Y1N+fNud9cfLexvnuesWVv5eGZnWw/3SKIJ23+rb1+sz2fa8Ry59yMrYyIm9zG8o09X2rE6vahEavhi0YsihhxeWbb+i19bbQxMqfPnZ9l6/jnEp6KVMa+TpHi0cUmRdMtZVAURVGU04pPkFAL83KreAL4t9PKRMJtFITFNl/oK/sAuAWJ/5aKxH4bgret2Rokpthi3z1DkPHOzcMzZ9g8GQlDMtOeb7L5MmQ/2fa2bravPBrufhfzLQ0JfVHLPut54G/22j4kdEcckORr40eC2WLbTURei1NFFt7rdHqggk1RFEU5zcgCJsS6E3lkKRLQd7KvbDoivj6z16oBf/ddX2tz/16kx4Hv8vns94DVtr3DiBAECYJ7CTAQiXmWVxYjW59Nsee7kFhnlYHPEUPQMV/97rbfufENEucsMx99KXmoYFMURVGUk8ZhvF0THFkEB9TtE3J9AhLwdf4JPnshnmXvIoItWEuQoLP5YSvePqAggq0hYkVLDlP/5zy2OxCons++lDxUsCmKoihKkWI33g4KhcWGQm4PxCUaB+wHpp1AOwdsUqKhW1MpiqIoilIAvkXmx12CuF6Vk4la2BRFURRFKQBLKCp7bJYE1MKmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsRRwaYoiqIoilLEUcGmKIqiKIpSxFHBpiiKoiiKUsQpBZhYd+JkkZaWxubNm0/6c2rWrMkvv/xy0p9TFCnJY4eSPf6SPHYo2eMvyWMHHX9JHv/JHnujRo2oXbt2xOtG04mlRYsWxbwPOnYdv45dx69j1/Hr+Ivv2NUlqiiKoiiKUsRRwaYoiqIoilLEiQNeiHUnigNLly6NdRdiRkkeO5Ts8ZfksUPJHn9JHjvo+Evy+GM19mK96EBRFEVRFKU4oC5RRVEURVGUIo4KthOgc+fOrF27lg0bNvD000/HujunhJSUFFauXMmyZctYtGgRADVq1GDGjBmsX7+eGTNmUL169Rj3snAYNWoUu3btIikpKVAWbaxvvvkmGzZsYMWKFbRq1SoWXS5Uwo1/8ODBbN26lWXLlrFs2TK6dOkSuDZo0CA2bNjA2rVr6dSpUyy6XGg0aNCA2bNns3r1alatWsUjjzwClJz3P9L4S8L7X758eRYuXMjy5ctZtWoVL7zwAgCJiYksWLCA9evXM2HCBMqWLQtAuXLlmDBhAhs2bGDBggU0atQohr0/cSKNf/To0WzcuDHw3l944YWBe4rTZx+gdOnSLF26lC+++AIoWu99zJfJno6pdOnSJjk52TRu3NiULVvWLF++3LRo0SLm/TrZKSUlxSQkJASV/f3vfzdPP/20AczTTz9thgwZEvN+Fka67LLLTKtWrUxSUlKuY+3SpYuZNm2aAUzbtm3NggULYt7/kzH+wYMHm4EDB+ao26JFC7N8+XJTrlw5k5iYaJKTk03p0qVjPoaCprp165pWrVoZwFSpUsWsW7fOtGjRosS8/5HGX1Le/8qVKxvAlClTxixYsMC0bdvWfPLJJ6ZHjx4GMCNGjDD9+/c3gHnggQfMiBEjDGB69OhhJkyYEPP+n4zxjx492tx888056ha3zz5gHn/8cTN27FjzxRdfGKAovfexf3FOx9SuXTvz9ddfB84HDRpkBg0aFPN+newUTrCtXbvW1K1b14B80a9duzbm/Sys1KhRoyDBEmms7777runZs2fYeqdzCh1/pB/s0M//119/bdq1axfz/hdWmjx5sunYsWOJe/9Dx1/S3v+KFSuaJUuWmDZt2pj09HQTFxdnIPj73z/WuLg4k56eHvN+n4zxRxJsxe2zX79+fTNz5kxz1VVXBQRbUXnv1SVaQOrXr09qamrgfOvWrdSvXz+GPTo1GGOYMWMGixcv5t577wWgTp067Ny5E4CdO3dGjdJ8uhNprCXp8zBgwABWrFjBqFGjAi7B4jz+Ro0a0apVKxYuXFgi33//+KFkvP+lS5dm2bJlpKWl8c033/Dzzz+zd+9esrOzgeDx+ceenZ3Nvn37SEhIiFnfC4PQ8f/4448AvPTSS6xYsYLXX3+dcuXKAcXvvR82bBhPPfUUx48fByAhIaHIvPcq2ApIqVKlcpQZY2LQk1NL+/btufjii+nSpQsPPfQQl112Way7VCQoKZ+HESNGcPbZZ3PRRRexY8cOXnvtNaD4jr9y5cp89tlnPPbYYxw4cCBivZIy/pLy/h8/fpxWrVrRoEED2rRpQ4sWLXLUceMrbmOHnOM/77zz+POf/0zz5s1p3bo18fHxgXnbxWn81113HWlpaUFhO6KN71SPXQVbAdm6dSsNGzYMnDdo0IDt27fHsEenhh07dgCQnp7OpEmTaNOmDbt27aJu3boA1K1bl7S0tFh28aQSaawl5fOQlpbG8ePHMcYwcuRI2rRpAxTP8ZcpU4bPPvuMsWPHMmnSJKBkvf/hxl+S3n+Affv2MWfOHNq1a0f16tWJi4sDgsfnH3tcXBzVqlVjz549MetzYeLGf+211wYsy0ePHmX06NHF8r1v3749N9xwAykpKUyYMIEOHTowbNiwIvPeq2ArIIsWLaJJkyYkJiZStmxZevbsydSpU2PdrZNKpUqVqFKlSuC4U6dOrFq1iqlTp9K7d28AevfuzZQpU2LZzZNKpLFOnTqVu+66C4C2bduyb9++wBdcccKJFYA//vGPrFq1CpDx9+zZk3LlypGYmEiTJk0CbpTTlVGjRrFmzRreeOONQFlJev/Djb8kvP81a9akWrVqAFSoUIGOHTuyZs0avv32W2655RYg53vvPhO33HILs2fPjk3HC4lw41+7dm3Qe9+tW7eg9764fPafeeYZGjZsSOPGjenZsyezZ8/mjjvuKFLvfcwn+Z2uqUuXLmbdunUmOTnZPPPMMzHvz8lOjRs3NsuXLzfLly83q1atCow5Pj7ezJw506xfv97MnDnT1KhRI+Z9LYw0btw4s337dnP06FGTmppq7rnnnqhjfeutt0xycrJZuXKlufjii2Pe/5Mx/jFjxpiVK1eaFStWmClTpgRNLn7mmWdMcnKyWbt2rbn22mtj3v8TSe3btzfGGLNixQqzbNkys2zZMtOlS5cS8/5HGn9JeP9btmxpli5dalasWGGSkpLMc889Z0C+/xYuXGg2bNhgJk6caMqVK2cAU758eTNx4kSzYcMGs3DhQtO4ceOYj+FkjH/WrFlm5cqVJikpyXz00UeBlaRQvD77Ll1xxRWBRQdF5b3XnQ4URVEURVGKOOoSVRRFURRFKeKoYFMURVEURSniqGBTFEVRFEUp4qhgUxRFURRFKeKoYFMURVEURSniqGBTTgt69+6NMYZGjRqd8md/++23fPvtt6f8uY45c+YwcuTImD2/uJCSksLo0aNj3Q3lNOOKK67AGMMVV1wR666cdM466yyOHj3K1VdfHeuuKGFQwaYUKu7LLVL66KOPYt3F04quXbvSvn17XnnllVh3RSmiVK5cmcGDBzN16lS2b9+OMSaqMI2Li+PZZ59l48aNZGRksGbNGh566KGwdStVqsRrr73Gtm3byMjIYOnSpfTo0eNkDUUpBB5//PFAMNf8smXLFj7++GOGDBlSyL1SCouYB6jTVHzSFVdcYYwxZuTIkeb222/PkS655JICtVu6dGlTvnz5mIzp22+/Nd9++21Mnv2///0vELxR04mllJQUM3r06Jj3o7BTo0aNjDHGbNu2zUydOtUYY6KO81//+pcxxpj33nvP9O3b13zyySfGGBMIkOpPX3/9tTl69KgZOnSo6devn/nmm2+MMcbceeedMR/3qUqlSpUy5cuXN6VKlYp5X/KSUlNTT+j76uKLLzbGGNOpU6eYj0VTjhTzDmgqRskJtr59+8a8L4WVYiXYmjVrZowx5rbbbov5a5BbqlixYsz7kFs6nQVbtH9WypUrZ84880wDmLi4uKiC7YILLjDGGPPaa68FlU+cONFkZGQE7Vxwww03GGOMefjhhwNlpUqVMvPnzzc7d+4MRHsvrul0+EyHSycq2ACzbt06M3HixJiPRVNwUpeoEjMGDx6MMYaLLrqI9957j/T0dA4ePMgXX3xB48aNg+qGm8PWuHFjxo4dy9atW8nMzGTbtm3897//5YILLgi6t23btkyfPp19+/Zx8OBB5s6dy7XXXpujP3Fxcbz44ots3bqVQ4cOMXfuXNq2bRux/926dWPu3LkcOHCAAwcOMHPmTC655JKgOpUqVWLIkCEkJyeTkZFBWloa8+bNo3v37rm+PjfffDMA33zzTVB52bJlGTx4MAsWLOCXX34hIyODVatW8fDDDwfVe+SRRzDGcPHFF+do+7LLLsMYw7333hs0/qeeeoqffvqJjIwM0tPT+eijj6hfv37QvaNHj8YYQ4MGDRg/fjx79uzhp59+AmQOzD//+U9WrVoVeF2+++47OnXqFHaMd955J2vWrCEjI4PVq1dzxx13BD4XoVxwwQV8/vnngTGvWLGCu+++O0e9ypUr8/bbb5OWlsaBAweYPn06TZs2Dfv8SOT2mYmLi2PXrl188cUXYe+fNWsWqamplCpVKl/9b9SoEcYYXnzxRXr37s2qVas4cuQIPXv2jNjXo0eP5nmzbefOfPPNN4PK33zzTSpUqEC3bt2C6h4+fDho/qQxhrfeeos6derQoUOHPD2zX79+LFmyhMOHD/Prr78yefJkWrRoEbheo0YNUlNTSUpKonz58oHysmXLsnTpUnbt2kXt2rUBb8pFv379ePLJJ0lJSSEjI4PFixdHnHeV2/PB+y5q1aoVI0aMYNeuXRw+fDjomf45bK5+y5YtGT58OLt27WLfvn188sknVK9endKlS/P888+zZcsWMjIymDlzJomJiTn6VrNmTd566y22bNnCkSNHSElJ4eWXX6ZcuXJB9VJSUvj+++85//zzmTVrFocOHWLHjh28+OKLQfXc3+WVV14ZmIaSkpISuH7fffexfPlyDhw4wN69e1m5ciUvvPBCjn7NmDGD66+/nrJly4Z9TZXYEXPVqKn4JGdhe/TRR01CQkKO5P+vfPDgwcYYY5YtW2a+++478/DDD5shQ4aYQ4cOmdTU1KB9Gnv37m2MMV6ScrwAABSUSURBVKZRo0YGMGXKlDEbNmwwO3bsMM8//7zp06ePGTRokJk2bZrp0aNH4L5LL73UZGRkmNTUVPPss8+agQMHmlWrVpns7GzTvXv3oL47V9HUqVPNgw8+aIYPH2727NljkpOTc/zH+uijjwbqDhgwwDzxxBPmp59+MpmZmebSSy8N1Pvggw/MkSNHzLBhw0zfvn3N448/bj744APz+uuv5/pafvXVV2bjxo05yhMSEkx6erp55513zMMPP2wGDBgQcIU9//zzgXq1a9c2x44dC/usESNGmMzMzKDX+PPPPzeZmZnm3XffNffdd5/561//anbv3m02b95s4uPjA/VGjx5tjDEmKSnJTJw40fTv3988+uijBjA333yzWbNmjRkyZIi57777zJ/+9CezYsUKk5WVZa688sqgPtx5553GGGOWLl1qHnvsMfPcc8+ZnTt3miVLlhgjii2QLrnkEnPw4EGzYsUK89RTT5kHHnjATJs2zRhjzJNPPhlUd/r06cYYY8aMGWMeeOABM2bMGLNlyxaTlpaWJwtbXj8zw4cPN0ePHjUJCQlB99erV89kZWWZoUOH5rv/zr25cuVKs23bNvPss8+a+++/37Rt2zZPf3+5WdimT59uduzYkaO8bNmyJisry4wcOTJQtm7dOjN//vwcdc8++2xjjDF/+ctfcu3PG2+8YbKysszHH39sHnjgATNo0CCTmppqfv31V3P22WcH6nXo0MFkZ2ebYcOGBcr+/ve/G2OMuf7663N8vyxbtsxs3LjRDBo0yAwaNMikpKSYI0eOmPbt2xfo+e67KCkpycyYMcM89NBD5tlnnw165hVXXJGj/uLFi82XX35pHnzwQfPOO+8YY4yZPHmyGT58uJk7d655+OGHzSuvvGKOHj1q5s2bF9S3+Ph4k5ycbHbt2mVefPFFc++995p3333XHDt2LMc0iJSUFJOcnGy2bdtmXn/9dXP//fcH/ubvueeeQL3bb7/d7N6926xevTowDeXGG280gLn77ruNMcZMmjTJ9O/f3/Tv39+88cYbYa1xd9xxhzHGBH2XaSoSKeYd0FSMkvtyi0Tv3r0Ddd2X3ty5c01cXFyg/PrrrzfGGDNkyJBAWahgc66dW265JWp/Fi5caA4ePGgaNmwYKKtatarZtGmT2b59uylTpowBzLnnnmuMMWbChAlB9/fv398YY4K+1OrXr2+OHDli/vGPfwTVrVy5stm8ebP5/vvvA2V79uwxb731VoFey02bNpmZM2fmKC9dunRYd9T7779v9u3bZ8qWLRso+/rrr822bduC5t+UKVPGpKenm0mTJgXKunfvbowx5rrrrgtq86KLLjLHjh0zL774YqDMCbYRI0bk6EM4N1K5cuXM6tWrzVdffRXUhx07dpgNGzYE3dO0aVNz9OjRHIJt1apV5ocffgj6nADms88+MwcPHjRVq1Y1gOnatWuOzw5ghgwZElXIFOQz065dO2OMMf379w+6//HHHzfGGHPhhRfmu/9OsGVkZJizzjor35+Z3ARbUlKSWbx4cdhru3btMtOmTQucHzhwwHz66adh32NjjHnnnXei9qVNmzbGGGMeeuihoPL69eubffv2mY8++iio/NVXXzXZ2dmmY8eO5vLLLzdZWVnm3XffDarjvl/2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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# draw part\n",
    "plt.style.use('dark_background')\n",
    "plt.figure(figsize=(10, 10))\n",
    "plt.title('8 action space in stochastic Windy Gridworld', fontsize = 'xx-large')\n",
    "plt.xlabel('Episodes (averaged over 100 experiments)', fontsize = 'xx-large')\n",
    "plt.ylabel('Steps',fontsize = 'xx-large')\n",
    "plt.plot(hist_8, '-', c = 'blue', label = '8-action')\n",
    "plt.legend(loc = 'best', prop = {'size':12})\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}